package com.huawang.mdesign.model.service.util.reqif;

import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.annotations.XStreamOmitField;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * Base class for attribute definitions.
 *
 * @author xdl
 * @since 2023-04-04
 */
@Getter
@Setter
public abstract class AbstractAttributeDefinition extends AbstractAccessControlledElement {

    @XStreamImplicit
    List<AttributeDefinitionBoolean> attributeDefinitionBooleans;

    @XStreamImplicit
    List<AttributeDefinitionDate> attributeDefinitionDates;

    @XStreamImplicit
    List<AttributeDefinitionEnumeration> attributeDefinitionEnumerations;

    @XStreamImplicit
    List<AttributeDefinitionInteger> attributeDefinitionIntegers;

    @XStreamImplicit
    List<AttributeDefinitionReal> attributeDefinitionReals;

    @XStreamImplicit
    List<AttributeDefinitionString> attributeDefinitionStrings;

    @XStreamImplicit
    List<AttributeDefinitionXHTML> attributeDefinitionXHTMLS;

    /**
     * Back linkage to the owning SpecType.
     */
    @XStreamOmitField
    private AbstractSpecType specType;
}
